package com.dyna.patterns.design.behavioral.chain;

import java.util.Arrays;
import java.util.List;

/**
 * 责任链设计模式
 * @author zcw
 */
public class MainTest {

    public static void main(String[] args) {

        // 通过集合构建责任链
        List<Approver> handlers = Arrays.asList(
                new DepartmentManager("张经理"),
                new CFO("李总监"),
                new CEO("王董事长"));
        Approver chain = Approver.buildChain(handlers);

        // 使用方式不变
        chain.processRequest(new ExpenseRequest(30001));
    }

}

// 部门经理
class DepartmentManager extends Approver {
    public DepartmentManager(String name) {
        super(name, 5000); // 审批限额5000元
    }
}

// 财务总监
class CFO extends Approver {
    public CFO(String name) {
        super(name, 20000); // 审批限额20000元
    }
}

// 董事长
class CEO extends Approver {
    public CEO(String name) {
        super(name, 30000); // 最高权限
    }
}